#ifndef MOVIMIENTOSMODULE_H
#define MOVIMIENTOSMODULE_H

#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QDialog>
#include <QSqlDatabase>
#include <QSqlRelationalTableModel>
#include <QTableView>
#include <QMessageBox>
#include <QAction>
#include <QDebug>
#include <QHeaderView>
#include <QGridLayout>
#include <QGroupBox>
#include <QFormLayout>
#include <QLineEdit>
#include <QDateEdit>
#include <QKeyEvent>
#include <QKeySequence>
#include <QShortcut>

#include "CustomToolbar.h"
#include "AltaMovimiento.h"
#include "ModificacionMovimiento.h"
#include "ABMPersona.h"
#include "ABMConcepto.h"
#include "MovimientosModule.h"
#include "ChequesModule.h"

class MovimientosModule : public QMainWindow
{
    Q_OBJECT

public:
   explicit MovimientosModule(QWidget *parent);

signals:

public slots:
    void AltaMovimientoBtn();
    void BajaMovimientoBtn();
    void ModificacionMovimientoBtn();
    void ABMPersonaBtn();
    void ABMConceptoBtn();
    void UpdateMovimientosListBtn();
    void CorrectViewOfModel();
    void CalcularSaldoMensual();
    void SaldoEntreFechas();

private:
    /**
     * @brief client_toolbar
     */
    CustomModulesToolbar *moviminetos_toolbar;
    void AltaMovimientoToolBar();
    void BajaMovimientoToolBar();
    void ModificacionMovimientoToolBar();
    void ABMPersonaToolBar();
    void ABMConceptoToolBar();
    void UpdateMovimientosListToolBar();

    QAction *action_altaMovimiento;
    QAction *action_bajaMovimiento;
    QAction *action_modificacionMovimiento;
    QAction *action_abmPersona;
    QAction *action_abmConcepto;
    QAction *action_updateMovimientosList;

    QFormLayout *form_saldos;

    QDateEdit *fecha1_saldo;
    QDateEdit *fecha2_saldo;
    QLineEdit *saldo_line2;
};

class MovimientoSqlTableModel : public QSqlRelationalTableModel
{
    Q_OBJECT
public:
    MovimientoSqlTableModel(QObject * parent = 0, QSqlDatabase db = QSqlDatabase())
        : QSqlRelationalTableModel(parent,db) {;}
    QVariant data (const QModelIndex & index, int role = Qt::DisplayRole) const
    {
        if (role == Qt::TextAlignmentRole) {
            int col = index.column();
            if (col == 1 || col == 2 || col == 4) {
                return QVariant(Qt::AlignVCenter | Qt::AlignHCenter);
            }
            if (col == 6 || col == 7) {
                return QVariant(Qt::AlignVCenter | Qt::AlignRight);
            }
        }

        if (role == Qt::FontRole) {
            int col = index.column();
            if (col == 6 || col == 7)
                return QVariant (QFont("Helvetica57-Condensed",13,13));
            else
                return QVariant (QFont("Helvetica57-Condensed"));
        }

        return QSqlRelationalTableModel::data(index,role);
    }
};

#endif // MOVIMIENTOSMODULE_H
